package demo12;

import java.io.*;
import java.util.Scanner;

public class test15 {
    public static void main1(String[] args) throws IOException {
        Writer writer = new FileWriter("d:/mma.txt");
        writer.write("你好世界");
        writer.close();
    }
    public static void main(String[] args) {
        //1.输入要复制的文件
        System.out.println("请输入你要复制文件路径：");
        Scanner scanner =  new Scanner(System.in);
        String name = scanner.nextLine();
        File src = new File(name);
        //判断是否合法
        if(!src.isFile()) {
            System.out.println("文件不是普通文件，请确定输入是否合法！");
            return;
        }
        if(!src.exists()) {
            System.out.println("文件不存在，请确定输入是否合法！");
            return;
        }
        //2.开始复制
        File dest = copyDir(src);
        if(dest.isFile()) {
            System.out.println("复制成功！！！");
        }
    }

    private static File copyDir(File file){
        //1.先用读操作，把mma.txt文件中的所有内容给读出来，放到一个byte数组里面
        int n = 0;
        byte[] b = new byte[1024];
        try(InputStream inputStream = new FileInputStream("d:/mma.txt")) {
            n = inputStream.read(b);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        //2.再用写操作，将mma.txt中的内容复制到新的文件中：copy.txt
        System.out.println("请输入你要复制后的文件路径：");
        Scanner scanner = new Scanner(System.in);
        String name = scanner.nextLine();
        try(OutputStream outputStream = new FileOutputStream(name)) {
            File dest = new File(name);
            //判断此路径是否已经存在
            if(dest.exists()) {
                //判断是否是目录
                if(dest.isDirectory()) {
                    System.out.println("当前要复制到的文件为目录！");
                    return null;
                }
                //走到这说明现在要复制到的文件就是一个普通文件，并且存在，所以这里要做出判断是否要覆盖之前该文件中的内容
                if(dest.isFile()) {
                    System.out.println("目标文件已存在，请确定是否需要复制(Y/N,不分大小写)：");
                    String choice = scanner.nextLine();
                    if(choice.toLowerCase().equals("y")) {
                        outputStream.write(b);
                    }else {
                        System.out.println("停止复制");
                        return null;
                    }
                }
            }else {
                dest.createNewFile();
                outputStream.write(b);
            }
            return dest;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
